using System;

namespace SharpMud.DynamicTyping
{
	/// <summary>
	/// This application exception is thrown when there is a problem with dynamic type loading
	/// </summary>
	public class DynamicTypingException : System.Exception
	{
		/// <summary>
		/// This is the default constructor for DynamicTypingException
		/// </summary>
		public DynamicTypingException()
			:base()
		{
		}
		/// <summary>
		/// A constructor for DynamicTypingException
		/// </summary>
		/// <param name="message">The explicit message to be contained in this exception</param>
		public DynamicTypingException(string message)
			:base(message)
		{
		}
        /// <summary>
        /// A constructor for DynamicTypingException
        /// </summary>
        public DynamicTypingException(string message, System.Exception innerException)
            : base(message,innerException)
        {
        }
	}

	/// <summary>
	/// This exception is thrown during dynamic type loading if the target assembly can't be found
	/// </summary>
	public class AssemblyNotFoundException : DynamicTypingException
	{
		/// <summary>
		/// This is the default constructor for AssemblyNotFoundException
		/// </summary>
		public AssemblyNotFoundException()
			:base()
		{
		}
		/// <summary>
		/// A constructor for AssemblyNotFoundException
		/// </summary>
		/// <param name="message">The explicit message to be contained in this exception</param>
		public AssemblyNotFoundException(string message)
			:base(message)
		{
		}
        /// <summary>
        /// A constructor for AssemblyNotFoundException
        /// </summary>
        public AssemblyNotFoundException(string message, System.Exception innerException)
            : base(message,innerException)
        {
        }
	}
	/// <summary>
	/// This exception is thrown during dynamic type loading if the target type does not exist within the target assembly
	/// </summary>
	public class TypeNotFoundException : DynamicTypingException
	{
		/// <summary>
		/// This is the default constructor for TypeNotFoundException
		/// </summary>
		public TypeNotFoundException()
			:base()
		{
		}
		/// <summary>
		/// A constructor for TypeNotFoundException
		/// </summary>
		/// <param name="message">The explicit message to be contained in this exception</param>
		public TypeNotFoundException(string message)
			:base(message)
		{
		}
	}

}
